Imagina que eres un arquitecto. En lugar de dibujar un plano fijo para una sola casa de ladrillo, diseñas un plano maestro plano capaz de adaptarse a madera, acero o vidrio. En C++, esto es Programación genérica.
1. El mecanismo del plano
Una lista de parámetros de plantilla (por ejemplo, plantilla <typename T>) introduce marcadores de posición llamados parámetros de tipo de plantilla. Estos actúan como variables para tipos. Por ejemplo, en plantilla <typename T> ostream &print(ostream &os, const T &obj), T se determina solo cuando se llama a la función.
2. Instanciación
El compilador no compila la plantilla en sí misma en código máquina. En cambio, instanciación ocurre: el compilador genera una versión específica del código solo cuando se proporciona un argumento de plantilla es proporcionado. Debido a esto, las definiciones normalmente deben residir en archivos de encabezado.
3. Escribir código independiente de tipo
Para maximizar la reutilización, sigue la Mejor práctica: minimiza los requisitos. Escribir el código usando solo el < operador (mediante menor<T>) reduce los requisitos sobre los tipos en comparación con usar >, <=, y >=. La validación a menudo se retrasa; el compilador generalmente no puede encontrar muchos errores en la etapa de compilación de la plantilla misma; la mayoría aparecen durante la instanciación.